package com.enjoyor.soa.traffic.api.ubms.service.dubbo;

import com.enjoyor.soa.traffic.api.ubms.dto.OffsiteCtrlDevInfoDto;
import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

/**
 * 维护非现场主控设备信息的Dubbo服务
 * @author yuankun
 * @version V1.0
 */
public interface DubboOffsiteCtrlDevInfoService {
	/**
	 * 返回所有非现场主控设备信息
	 * @return ResultPojo 所有非现场主控设备信息
	 */
	public ResultPojo getOffsiteCtrlDevInfo();
	/**
	 * 返回所有非现场主控设备信息
	 * @param orderSeq 
	 * @param deviceStatusCode 
	 * @param oscName 
	 * @param oscId 
	 * @return ResultPojo 所有非现场主控设备信息
	 */
	public ResultPojo getOffsiteCtrlDevInfo(String oscId, String oscName, String deviceStatusCode, String orderSeq);

	/**
	 * 分页返回所有非现场主控设备信息
	 * @param page 分页对象
	 * @return ResultPojo 包含非现场主控设备信息的分页对象
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getPageOffsiteCtrlDevInfo(Page page);

	/**
	 * 返回指定编码的非现场主控设备信息
	 * @param oscId 非现场主控设备编码
	 * @return ResultPojo 非现场主控设备信息
	 */
	public ResultPojo getOffsiteCtrlDevInfoById(String oscId);
	
	/**
	 * 按名称匹配并返回非现场主控设备信息
	 * @param oscName 非现场主控设备名称
	 * @return ResultPojo 非现场主控设备信息
	 */
	public ResultPojo getOffsiteCtrlDevInfoByName(String oscName);
	
	/**
	 * 返回与输入前缀相匹配的最大非现场主控设备编码值，用于手工生成新的设备编码
	 * @param prefixOscId 非现场主控设备编码前缀
	 * @return String 与前缀相匹配的最大非现场主控设备编码值
	 */
	public String getMaxOscId(String prefixOscId); 
	
	/**
	 * 添加一条非现场主控设备信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param offsiteCtrlDevInfoDto 非现场主控设备信息
	 * @return ResultPojo 添加结果
	 */
	public ResultPojo addOffsiteCtrlDevInfo(String token, OffsiteCtrlDevInfoDto offsiteCtrlDevInfoDto);
	
	/**
	 * 修改一条非现场主控设备信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param offsiteCtrlDevInfoDto 非现场主控设备信息
	 * @return ResultPojo 修改结果
	 */
	public ResultPojo editOffsiteCtrlDevInfo(String token, OffsiteCtrlDevInfoDto offsiteCtrlDevInfoDto);
	
	/**
	 * 删除指定编码的非现场主控设备信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param oscId 非现场主控设备编码
	 * @return ResultPojo 删除结果
	 */
	public ResultPojo removeOffsiteCtrlDevInfo(String token, String oscId);

	@SuppressWarnings("rawtypes")
	public ResultPojo getPageEasyUiOffsiteCtrlDevInfo(Page page, String oscId, String oscName, String deviceStatusCode,String manageDept,
			String orderSeq);
}
